"""函数"""""

'''定义'''
# 函数就是一个功能/方法，根据用户的输入（也可以没有输入），返回对应的输出（输出）

'''函数定义的格式'''


# def 函数名字(形参): # 函数名字必须遵循下划线命名法，形参可以没有(括号也必须要有)，多个形参使用英文逗号分隔
#     代码体 # 实现功能
#     return xx  # 返回值，将你要返回的内容书写在return后边，也可以没有return(没有返回)
# def calc_factorial(n: int) -> int or None:
#     if n < 0:
#         return None2
#     else:
#         if n == 0:
#             return 1
#         else:
#             result = 1
#             for i in range(1, n + 1):
#                 result *= i
#             return result


'''函数的调用'''
# 函数名字(实参)

# print(calc_factorial())

'''函数类型'''


# 根据有无形参，有无返回值，分为四类
# # 1、有参有返回 calc_factorial()
# # 2、有参无返回 列表中的append()函数

# def demo1(s:int):
#     a = 1
#     a += s
# # 3、无参有返回 capitalize()
# # 4、无参无返回 reverse()
#
# '''参数类型'''
#
#
# # 形参：全称形式参数，是在函数括号内定义的参数名字，比如demo1中的“s”
# # 实参：全称是实际参数，在调用函数过程中，传入的值就是实参print(calc_factorial(2))，2就是实参
# # 参数类型：位置参数，默认值参数，关键字参数，不定长参数，强制位置参数
#
# def param_type(a, b, c, d=None, *args, **kwargs):
#     return f'a是{a}，b是{b}，c是{c}，d是{d}，元组包是{args}，字典包是{kwargs}'
#
#
# # # 位置参数：就是实参与形参的位置一一对应的
# # print(param_type(1, 2, 3))
# #
# # # 默认值参数：在函数定义过程中，可以对某个形参设置默认值，如果调用过程中，没有对该形参传递实参，那么这个形参的值就是默认值
# print(param_type(1, 2, 3, 4))
#
# # 关键字参数：假如函数没有设置强制位置参数，那么在调用函数过程中，我们可以改变实参的位置
# print(param_type(c=1, d=2, a=3, b=4))
#
# # 不定长参数：python中处理不定长有两个形式
# #   可变参数（*args）,它不是形参，如果形参数量定义3个，用户在调用过程中传入了4个实参，如果不定义不定长参数，那么会报错
# print(param_type(1,2,3,45,6,78,9))
# tup1 = (1,2,3,4)
# print(param_type(*tup1))
# #   关键字参数（**kwargs），如果传递的关键字大于形参数量，那么多余会存放在字典中
# print(param_type(a=1, b=2, c=3, d=4, f=5, e=6))
# dict1 = {'a':1,'b':2,'c':3,'d':4}
# print(param_type(**dict1))
#
# # 强制位置参数：3.8版本之后新增的功能，在创建形参规定语法用来表示强制参数"/","/"前的形参必须使用位置参数传参，不能用关键字
# def param_type1(a, b,/, c, d=None, *args, **kwargs):
#     return f'a是{a}，b是{b}，c是{c}，d是{d}，元组包是{args}，字典包是{kwargs}'


# print(param_type1(1, 2, 3, 4))
# print(param_type1(a=1, b=2, c=3, d=4)) # 错误调用


# todo1.输入用户名，判断用户名是否合法(用户名长度6~10位)
def user_name(s):
    if 6<=len(s)<=10:
        return '合法'
    else:
        return '不符合'
print(user_name('wuhanxia'))